﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;

namespace AgendaManager.Service
{
    public class InformeSemanalDAO : DAOBase
    {
        public static InformeSemanal NuevoInformeSemanal(InformeSemanal informeSemanal)
        {
            try
            {
                int informeSemanalId = GetNextId(informeSemanal);

                if (informeSemanalId != 0)
                {
                    informeSemanal.Id = informeSemanalId;
                    if (CreateEntity(informeSemanal))
                    {
                        CreateFolders(informeSemanal.Id);


                        return informeSemanal;
                    }
                    throw new Exception("No se pudo crear el Informe Semanal");
                }
                else
                    throw new Exception("No se pudo obtener el siguiente id de la entidad: Informe Semanal");
            }
            catch (Exception)
            {

                throw;
            }
        }

        private static void CreateFolders(int p)
        {
            try
            {
                Carpeta carpeta = new Carpeta();
                carpeta.ObraId = p;

                carpeta.Tipo = "Ivos y Notas";
                int nextId = GetNextId(carpeta);
                carpeta.Id = nextId;
                CreateEntity(carpeta);

                carpeta.Tipo = "Fotos";
                nextId = GetNextId(carpeta);
                carpeta.Id = nextId;
                CreateEntity(carpeta);

                carpeta.Tipo = "Planos";
                nextId = GetNextId(carpeta);
                carpeta.Id = nextId;
                CreateEntity(carpeta);
            }
            catch (Exception)
            {

                throw;
            }
        }

        private static void CreateSubFolders(int p)
        {
            try
            {
                
            }
            catch (Exception)
            {

                throw;
            }
        }

        internal static List<InformeSemanal> RetrieveEntities(object dto, string filtro)
        {
            List<InformeSemanal> dtos = new List<InformeSemanal>();

            DataTable dt = GetDataTable(dto, filtro);

            if (dt.Rows.Count > 0)
                dtos = LlenarInformes(dto, dt);

            return dtos;
        }

        private static List<InformeSemanal> LlenarInformes(object dto, DataTable dt)
        {
            List<InformeSemanal> dtos = new List<InformeSemanal>();

            foreach (DataRow dr in dt.Rows)
            {
                InformeSemanal aux = new InformeSemanal();
                PoblarObjetoDesdeDataRow(aux, dr);

                dtos.Add(aux);
            }

            return dtos;
        }
    }
}